import ctypes
import os

# 读取二进制文件内容
binary = open('./test', 'rb').read()

# 使用 syscall 创建匿名文件（memfd_create）
fd = ctypes.CDLL(None).syscall(319, b"test", 1)  # 参数 319 是 memfd_create 的 syscall 编号，"test" 是文件名，1 表示 CLOEXEC 标志

# 将二进制内容写入匿名文件
final_fd = open(f'/proc/self/fd/{fd}', 'wb')
final_fd.write(binary)
final_fd.close()

# 执行匿名文件
os.execl(f'/proc/self/fd/{fd}', './test')  # 第二个参数 './test' 是程序名称（argv[0]）
